package com.qf.service;

import com.qf.model.Student;
import com.qf.vo.StudentVO;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.HashMap;
import java.util.List;

public interface StuService {
    // 根据id查询学生信息
    Student getStuById(int id);

    // 查询所有学生对象
    List<Student> findAllStu();

    // 根据姓名或年龄查询学生对象
    List<Student> findStuByNameOrAge(HashMap<String, Object> map);

    // 添加学生对象
    boolean addStu(Student student);

    // 根据学生id修改学生对象信息，全部信息都要更新
    boolean updateStuById(Student student);

    // 根据学生id修改学生对象信息，部分信息只更新需要更新的字段
    boolean updateStuPartInfo(Student student);

    // 根据学生id删除学生对象
    boolean deleteStuById(int id);

    // 根据学生id列表删除学生对象
    boolean deleteStuByListId(List<Integer> ids);

    // 查询所有学生对象，并关联查询班级信息-----一对一查询(两表关联查询)
    List<Student> findAllStuAndClassInfo();

    // 查询一个学生对象，并关联查询所学科目信息-----一对多查询(两表关联查询)
    List<Student> findStuInfoAndAllSubjectByStuId(int id);

    // 查询一个学生对象，并关联查询所学科目信息和所教老师信息-----多对多查询(三表关联查询)
    StudentVO findStuInfoAndAllSubjectInfoAndAllTeacherInfoByStuId(int id);

    // 查询一个学生对象，并关联查询班级信息-----一对一查询(两表关联查询)
    StudentVO findStuInfoAndClassInfoByStuId(int id);

    // 查询一个学生对象，并关联查询所学科目信息-----一对多查询(两表关联查询)
    StudentVO findSingleStuInfoAndSubjectInfoByStuId(int id);
}
